1. Field of the Invention
The present invention generally relates to an apparatus and method for segmenting transmission data and combining received data in a mobile communication system, and in particular, to a method and apparatus for performing segmentation and combination according to a size of a transmission packet during code block segmentation and combination.
2. Description of the Related Art
Mobile communication systems generally channel-encode source user data with an error correction code before transmission, to improve reliability of transmission data. Typical codes used for channel encoding can be classified into a convolution code and a linear block code for which a single decoder is used. Recently, aside from such typical codes, a turbo code has been proposed and widely used. A turbo code has been widely used because, for example, a turbo code has an advantage because error correction performance increases with a size of an information word.
However, the error correction performance of the turbo code becomes saturated when the size of the information word is greater than or equal to a particular size. An increase in the size of the information word increases a size of an interleaver in a turbo coder, causing an increase in complexity of a decoder.
In this context, the turbo code has no performance and implementation gain when the size, i.e., coding length, of the information word is longer than or equal to a specific length. Therefore, a scheme has been proposed, which segments the information word into multiple code blocks and separately encodes each of the code blocks. The 3rd Generation Partnership Project (3GPP) standard defines this scheme as code block segmentation.
For example, when the size of the information word is greater than or equal to 5114 bits, the scheme segments the information word so the size of the information word is not greater than 5114 bits. Each of the parts segmented from the information word is called a code block, and the turbo coder performs coding on each of the code blocks independently.
FIG. 1 shows a transmitter for performing code block segmentation according to the prior art.
In FIG. 1, an information word 100, meaning transmission data, is input to a segmentation unit 110. The segmentation unit 110 serves to segment a generated information word in units of code blocks according to a particular length, and this is called a code block segmentation operation. A channel encoder 120 performs turbo or convolutional coding on the input codes segmented in units of code blocks, and outputs a coded codeword. The codeword is divided into information (systematic) bits and parity bits. The information (systematic) bit means the desired transmission signal itself, and the parity bit is a signal added to correct the error occurred during transmission, during its decoding.
FIG. 2 illustrates an example in which one information code is segmented into three code blocks according to the prior art.
Referring to FIG. 2, for a turbo coder, a maximum size Z (220) of a code block is 5114 bits. An input information word size X (210) is assumed herein to be bits. The conventional segmentation unit 110 shown in FIG. 1 segments an information word according to the code block segmentation operation. The size of the information word should be less than the maximum size Z (220) of the code block. Therefore, because the information word is 12999 bits in size, the information word should be segmented into three code blocks. A size K (200) of each of the three segmented code blocks is 4333 bits. As a result, the channel encoder 120, like the turbo coder, separately encodes the three 4333-bit code blocks, thereby generating three codewords.
The code block segmentation shown in FIG. 2 may have the following problems.
For example, a unit of the information word is assumed to be a byte and the maximum code block length is assumed to be 5120 bits. The minimum size of the information word defined in the 3GPP standard is also assumed to be 40 bits. Therefore, since the minimum size of the code block is 40 bits, the maximum length of the code block is 5120 bits, and the unit of the information word is byte, the sizes increase in order of 40, 48, 56, 64, 72, . . . , 5120 from the minimum size of the code block through the maximum size of the code block. In this case, the total number of types of the possible codewords generated by the channel encoder 120 is (5120−40)/8+1=636.
However, for an information word being greater than or equal to 5120 bits in size, when it is segmented by the code block segmentation process shown in FIG. 2, a 5128-bit information word, since 5128 bits are 2564×2 bits, is segmented into two 2564-bit code blocks, and a 5136-bit information word, since 5136 bits are 2568×2 bits, is segmented into two 2568-bit code blocks. If the information words with the 5128-bit size and the 5136-bit size undergo the code block segmentation process shown in FIG. 2, an interval between the code blocks is reduced to four (=2568-2564) bits. In addition, for an information word being greater than or equal to 15360 bits in size, since the information word should be segmented into three code blocks, an interval between the code blocks is reduced to two bits.
As described above, in the conventional code block segmentation, the interval between the segmented code blocks decreases with the size of the information word. For example, although an interval between a 20496-bit information word and a 20504-bit information word is eight bits, after their code block segmentation, the segmented code blocks have 4100-bit and 4101-bit sizes, respectively, so an interval therebetween is one bit. In this way, the code block segmentation operation may increase the number of types of the generated codewords. The increase in the number of types of the generated codewords may increase the channel coding complexity in the process of optimizing channel codes.
For a channel encoder having an interleaver therein, like the turbo coder, the increase in the number of code blocks causes an increase in the number of types of interleavers, thereby increasing the complexity. Therefore, a great need exists for a scheme of reducing the system complexity by minimizing the number of types of the code blocks.